#pragma once

#include <ostream>
#include <iomanip>
#include <gaol/gaol>
#include "elisa/elisa.h"

class Modeler
{
public:
	virtual elisa::Model & model() = 0;

	virtual void print() = 0;
	/*
	virtual elisa::RealVar & varX() {}
	virtual elisa::RealVar & varY() {}
	void output(std::ostream & os, std::ostream & osMid)
	{
		os << std::setprecision(20);
		os << varX().domain().inf() << ' ' << varY().domain().inf() << std::endl;
		os << varX().domain().inf() << ' ' << varY().domain().sup() << std::endl;
		os << std::endl;
		os << varX().domain().sup() << ' ' << varY().domain().inf() << std::endl;
		os << varX().domain().sup() << ' ' << varY().domain().sup() << std::endl;
		os << std::endl;
		os << varX().domain().inf() << ' ' << varY().domain().inf() << std::endl;
		os << varX().domain().sup() << ' ' << varY().domain().inf() << std::endl;
		os << std::endl;
		os << varX().domain().inf() << ' ' << varY().domain().sup() << std::endl;
		os << varX().domain().sup() << ' ' << varY().domain().sup() << std::endl;
		os << std::endl;	

		osMid << std::setprecision(20);
		osMid << varX().domain().mid() << ' ' << varY().domain().mid() << std::endl;
	}
	*/
};
